package com.cci.kangdao.service;

import org.springframework.web.servlet.ModelAndView;

import java.util.Map;

/**
 * 1、CRM系统服务
 * @author leonbreeze
 *
 */
public interface CRMPlatformService {

	/**
	 * 1、CRM系统创建工单同步到APP系统
	 * @param map
	 * @return
	 */
	public ModelAndView createWorkOrderFromCRM(Map<String,Object> map);

	/**
	 * CCEC crm系统同步工单信息至APP
	 * @param map 工单信息Map
	 */
	void createWorkOrderFromCCEC(Map<String,Object> map);

	/**
	 * 2、根据工单编号获取外出轨迹点
	 * @param map
	 * @return
	 */
	public ModelAndView getWorkOrderTracks(Map<String,Object> map);

    /**
     * 获取轨迹页面
     * @param map
     * @return
     */
    ModelAndView getTrackPages(Map<String,Object> map);

	/**
	 * 3、CRM系统向APP系统请求工单照片信息
	 * @param map
	 * @return
	 */
	public ModelAndView getOrderPictureInfos(Map<String,Object> map);
	
	/**
	 * 4、同步服务站经纬度到CRM系统
	 * @param map
	 * @return
	 */
	//public ModelAndView syncServiceStationandLonToCRM(Map<String,Object> map);
	
	/**
	 * 5、同步服务站信息到APP系统
	 * @param map
	 * @return
	 */
	public ModelAndView syncServiceStationInfosFromCRM(Map<String,Object> map);

	/**
	 * 7、同步技师资质表
	 * @Title: syncEngineerQualifyInfos  
	 * @Description: TODO(这里用一句话描述这个方法的作用)  
	 * @param @param list
	 * @param @return
	 * @return ModelAndView   
	 * @throws
	 */
	public ModelAndView syncEngineerQualifyInfos(Map<String, Object> map);
	
	/**
	 * 8、更新审核岗位及人员信息
	 * @Title: syncPositionInfo  
	 * @Description: TODO(这里用一句话描述这个方法的作用)  
	 * @param @param map
	 * @param @return
	 * @return ModelAndView   
	 * @throws
	 */
	public ModelAndView syncPositionInfo(Map<String, Object> map);
	
	/**
	 * 9、CRM系统同步异常信息到APP系统
	 * @Title: syncExceptionsToApp  
	 * @Description: TODO(这里用一句话描述这个方法的作用)  
	 * @param @param map
	 * @param @return
	 * @return ModelAndView   
	 * @throws
	 */
	public ModelAndView syncExceptionsToApp(Map<String, Object> map);
	
	/**
	 * 10、APP修改服务站经纬度需要同步给CRM
	 * @Title: syncServiceStationLonANdLat  
	 * @Description: TODO(这里用一句话描述这个方法的作用)  
	 * @param @param map
	 * @return void   
	 * @throws
	 */
	public void syncServiceStationLonAndLat(Map<String, Object> map);

	/**
	 * @Author Joe
	 * @Description 11 、同步异常工单信息到CRM系统
	 * @Date 8:49 AM 2019/4/22
	 * @Param [map]
	 * @return void
	 **/
	public void syncExceptionalOrderInfoToCRM(boolean isSync);

	/**
	 * @Author Joe
	 * @Description 12 、CRM同步工单信息到APP系统
	 * @Date 1:37 PM 2019/5/7
	 * @Param []
	 * @return void
	 **/
	public ModelAndView updateCRMWorkOrderInfo(Map<String, Object> map);

	/**
	 * @Author Joe
	 * @Description 13 、手动
	 * @Date 1:37 PM 2019/5/7
	 * @Param []
	 * @return void
	 **/
	public ModelAndView manualUpdateWorkOrderInfo(Map<String, Object> map);

	//ljk   2.2.4 CRM系统同步工单状态到APP系统
	public ModelAndView syncCRMOrderStatus(Map<String, Object> map);

	/**
	 * CCEC crm系统同步工单状态至APP
	 * @param map 工单状态信息Map
	 */
	void syncCrmOrderStatusFromCCEC(Map<String,Object> map);

	/**
	 * @Author Joe 13
	 * @Description //2.1.4CRM系统同步服务技师资质信息到APP系统
	 * @Date 11:16 AM 2019/7/23
	 * @Param [map]
	 * @return org.springframework.web.servlet.ModelAndView
	 **/
	public ModelAndView syncQualificationInfo(Map<String, Object> map);

	/**
	 * @Author Joe
	 * @Description //2.1.12 CRM系统更新发动机信息到APP系统
	 * @Date 4:01 PM 2019/7/26
	 * @Param [map]
	 * @return org.springframework.web.servlet.ModelAndView
	 **/
	public ModelAndView updateEngineInfo(Map<String, Object> map);


	/**
	 * 同步渠道下所有的服务商经纬度数据
	 * @param map
	 * @return
	 */
	public ModelAndView syncAllServiceStationsLatAndLon(Map<String, Object> map);

	/**
	 * CRM 同步错误照片信息至APP系统
	 * @param map
	 */
	void syncErrorPictures(Map<String,Object> map);

	/**
	 * 根据诊断工单编号获取详情
	 * @param map
	 * @return
	 */
	public ModelAndView getDiagnosticMsgByDROrderNo(Map<String, Object> map);

	/**
	 * 根据ESN获取SMN
	 * @param map
	 * @return
	 */
    public ModelAndView getSMNByESN(Map<String, Object> map);

	/**
	 * CCEC 同步渠道零件信息
	 * @param map 零件信息
	 * @return
	 */
	ModelAndView syncPartInfos(Map<String, Object> map);

	/**
	 * CCEC同步发动机信息至APP
	 * @param map 发动机信息
	 */
	ModelAndView syncEngineInfos(Map<String, Object> map);


    /**
     * ljk     dbu渠道crm通过或者驳回异常关闭申请   异常关闭服务工单
     *
     * @param map
     * @return
     */
    public ModelAndView syncWOCloseRequest(Map<String, Object> map);
    
    /**
	 * CRM同步服务工单服务子类型
	 * @param map
	 * @return
	 */
	void crmSyncServiceSubType(Map<String, Object> map);
	
	/**
	 * 微信公众号开发 CRM推送短信给用户，让用户更新位置
	 * @param map
	 */
	void crmCallAPPSendSMS(Map<String, Object> map);
	
	/**
	 * 400坐席 400主管取消服务工单
	 * @param map
	 */
	void crmCallAPPCancelWO(Map<String, Object> map);


    /**
     * DDCR发起取消经销商授权接口
     *
     * @param map
     */
    void ddcrCancelStationAuthorization(Map<String, Object> map);

     /**
      * @description: DBU sf 主动升级工单同步数据
      * @param:
      * @return:
      * @exception:
      * @author: shiliqiang
      * @company: CTY Technology Co.,Ltd
      * @since: 2022/1/12 13:59
      * @version: V1.0
      */
     void escalation(Map<String, Object> map) throws Exception;

    ModelAndView syncPositionInfoDub(Map<String, Object> map);

    void retryExceptionDataSyncCrm(Map<String, Object> map);

    String syncIndividualCasesSave(Map<String, Object> map);
}
